import Vue from 'vue'// 引入Vue框架
import axios from 'axios'// 引入资源请求插件
import { Loading, Message } from 'element-ui'

// 设置 axios 的baseUrl
// axios.defaults.baseURL = process.env.NODE_ENV === 'development' ? '/api' : '/governance/api'
// axios.defaults.baseURL = process.env.NODE_ENV === 'development' ? '/api' : 'http://222.210.127.164:81/governance/api'
axios.defaults.baseURL = process.env.NODE_ENV === 'development' ? '/api' : 'http://118.122.86.3:80/api/governance'

// 添加请求拦截器
axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前将token存入headers
    let userInfo = JSON.parse(sessionStorage.getItem('GOVERNANCE_USER_INFO'))
    if (userInfo && userInfo.token) {
      // 这里将token设置到headers中，header的key是Authorization，这个key值根据你的需要进行修改即可
      config.headers.token = userInfo.token
    }
    return config
  }, function (error) {
    // 请求错误时做些事
    return Promise.reject(error)
  }
)

// 添加响应拦截器
axios.interceptors.response.use(
  function (response) {
    // 对响应数据做些事
    return checkResultCode(response)
  }, function (error) {
    // 请求错误时做些事
    return Promise.reject(error)
  }
)

// 接口请求成功，判断业务是否成功
function checkResultCode (re) {
  if (re) {
    const data = re.data
    const code = data.code
    const msg = data.msg
    /* if (code >= 4000 && code < 4100) {
        Message.error({message: '参数异常，' + msg, showClose: true, type: 'warning'});
        return false
    } else if (code >= 4100 && code < 4200) {
        Message.error({message: '服务器内部错误!', showClose: true, type: 'warning'});
        return false
    } else if (code >= 4200 && code < 4300) {
        Message.error({message: '登录超时即将返回登录界面!', showClose: true, type: 'warning'});
        setTimeout(function () {
            let host = window.location.host;
            window.location.href = 'http://' + host + '/'
        }, 2000);
        return false
    } else if (code >= 5000 && code < 5100) {
        Message.error({message: '服务器内部错误!', showClose: true, type: 'warning'});
        return false
    } else */
    if (code === 0) {
      // 登录成功
      return data.data
    } else if (code >= 4300 && code < 4400) {
      // 登录相关
      Message.error(msg)
      setTimeout(function () {
        sessionStorage.removeItem('GOVERNANCE_USER_INFO')
        sessionStorage.removeItem('activeIndex')
        if (process.env.NODE_ENV === 'development') {
          let host = window.location.host
          window.location.href = 'http://' + host + '/governance'
          return
        }
        this.$router.push('/login')
      }, 700)
      return false
    } else {
      Message.error(msg)
      return false
    }
  }
}

// 使用axios插件
Vue.prototype.$axios = axios

export default ({})
